[% setvar title The Perl 6 Summary for the week ending 20040111 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the week ending 20040111'></a><h1>The Perl 6 Summary for the week ending 20040111</h1>
<p>It's Monday. People have been talking about Perl 6, Parrot and the
European Union Constitution. Let's find out what they've been saying
about Parrot first shall we?</p>
<a name='Threads'></a><h2>Threads</h2>
<p>Threads were discussed some more. Dan's deadline is coming up soon,
hopefully soon after that discussion will move from Holy Skirmishes
about architecture and on to meaningful discussions of a real
implementation.</p>
<p>Hmm... that came out rather more dismissive than I intended.</p>
<a name='Continuation problems'></a><h2>Continuation problems</h2>
<p>Luke Palmer found a problem with Parrot's continuations. A
continuation is supposed to encapsulate the interpreter's control
state, in other words the position of the program counter and the
state of the register stacks, and a pointer to the previous
continuation. However, it turns out that a Parrot continuation just
contains the program counter and a pointer to the previous
continuation. There was some discussion of why this was so (Melvin
Smith seemed to claim that it was both his fault and not his fault).</p>
<p>Everyone agreed that this needed to be fixed pretty promptly and it
wasn't long before Luke posted a patch.</p>
<p><a href='http://groups.google.com/groups?selm=20040106145324.GA12805@babylonia.flatirons.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=20040108031029.GA19161@babylonia.flatirons.org' target='_blank'>groups.google.com</a></p>
<a name='A problem with threads'></a><h2>A problem with threads</h2>
<p>In a change from the discussions of thread philosophy, Jeff Clites
posted about a problem he was having with Parrot's current threads
implementation which was causing problems when trying to join multiple
threads. Between them, Jeff and Leo T&ouml;tsch tracked down a
possible cause of the problem and Jeff offered up a patch which Leo
applied.</p>
<p><a href='http://groups.google.com/groups?selm=B8972372-3F66-11D8-A5EA-000393A6B9DA@mac.com' target='_blank'>groups.google.com</a></p>
<a name='The PPC JIT gets fixed'></a><h2>The PPC JIT gets fixed</h2>
<p>Jeff Clites also posted a patch which cleans up the last problems
with the JIT on PPC. Leo applied it. Us Apple users cheered.</p>
<p><a href='http://groups.google.com/groups?selm=200401061713.i06HDgZ14086@thu8.leo.home' target='_blank'>groups.google.com</a></p>
<a name='Luke Palmer gets his act together'></a><h2>Luke Palmer gets his act together</h2>
<p>Luke Palmer decided to get his act together (given the level of his
contribution to the Perl 6 lists so far, I'm almost scared to find out
what he's going to be like now...) and finish up his 'Priority DOD'
rethink of the Garbage Collector. I confess I'm not really qualified
to discuss what's different about it, beyond the claim of a 10,000%
speed up when there were no 'eager' PMCs about (things that need
immediate cleanup on scope exit; the canonical example being a Perlish
file handle) and only a 5% slowdown when there were.</p>
<p>Luke and Leo discussed the patch a bit before Leo applied it.</p>
<p><a href='http://groups.google.com/groups?selm=20040105134753.GA2215@babylonia.flatirons.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=20040105192430.GA32476@babylonia.flatirons.org' target='_blank'>groups.google.com</a> -- Luke explains the
patch</p>
<a name='IMCC speed issues'></a><h2>IMCC speed issues</h2>
<p>Dan posted some timings he'd made of IMCC compiling some large subs,
which were not the most wonderful timings I've ever seen. A 41 minute
compile isn't generally what one wishes to see. Melvin Smith had a few
ideas about what was causing it, as did Leo (it seems that IMCC's
register allocation is very slow in the presence of spilling and Live
analysis increases with the product of the number of lines and
variables in a segment. Leo recommended redoing the sub to reduce the
number of (and avoid long lived) PIR variables (ie. registers) by
using lexicals or globals instead.</p>
<p><a href='http://groups.google.com/groups?selm=a0601020fbc1f2406c38a@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='References to hash elements'></a><h2>References to hash elements</h2>
<p>Arthur &quot;Ponie&quot; Bergman had some questions about how references to hash
elements would be done. Consider the following Perl code:</p>
<pre>   my %hash;
   $foo = \$hash{key};

   $$foo = &quot;bar&quot;;

   print $hash{key}; # Prints &quot;bar&quot;</pre>
<p>Arthur wondered how this could be made to work with the current vtable
setup, specifically in the presence of tying. Simon Cozens thought
that there should be a special HashElement PMC which would handle
fetching the actual value from the hash (or writing it back to the
hash) as appropriate. Dan agreed with him, so it looks like this might
be the way forward.</p>
<p><a href='http://groups.google.com/groups?selm=E8338D24-4068-11D8-896A-000A95A2734C@nanisky.com' target='_blank'>groups.google.com</a></p>
<a name='Instantiation?'></a><h2>Instantiation?</h2>
<p>Michal Wallace asked how to instantiate objects from Parrot. Luke
Palmer supplied the answer, but pointed out that, at present, classes
can only have integer attributes. It turns out that, for Michal's
purposes, he can probably get by with using properties instead, so
that's all right.</p>
<p>St&eacute;phane Payrard did the decent thing and implemented the
other attribute types. He even wrote tests.</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.58.0401071857360.13262@hydrogen.sabren.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=20040110212248.GA12650@stefp.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Creating 'proper' interpreters in Parrot'></a><h2>Creating 'proper' interpreters in Parrot</h2>
<p>Simon Cozens wondered what was left to do to allow parrot to be
embedded in an interpreter and have PIR fed directly to it. Leo
pointed him at his own YAL.</p>
<p><a href='http://groups.google.com/groups?selm=87u136fzs2.fsf@alibi.simon-cozens.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://toetsch.at/yal/' target='_blank'>toetsch.at</a> -- Yet Another Language</p>
<a name='yield op?'></a><h2><code>yield</code> op?</h2>
<p>Michal Wallace was uncomfortable with the workings of Parrot
Coroutines and posted a sample of parrot code which demonstrated
why. Leo promised to fix it once he'd applied Luke's Continuations
patch.</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.58.0401090305540.21408@hydrogen.sabren.com' target='_blank'>groups.google.com</a></p>
<a name='Congratulations Dan'></a><h2>Congratulations Dan</h2>
<p>Melvin Smith offered his congratulations to Dan for the first
commercial use of Parrot. I think I can safely say we all echo those
congratulations.</p>
<p><a href='http://www.sidhe.org/~dan/blog/archives/000288.html' target='_blank'>www.sidhe.org</a></p>
<a name='Meanwhile in perl6-language'></a><h1>Meanwhile in perl6-language</h1>
<a name='Roles and Mix-ins'></a><h2>Roles and Mix-ins</h2>
<p>Discussion of roles as mix-ins kicked off again after the Christmas
break. The canonical <code>Dog::bark</code> vs. <code>Tree::bark</code> problem was
discussed.</p>
<p><a href='http://groups.google.com/groups?selm=20040105164608.GA69309@megazone.bigpanda.com' target='_blank'>groups.google.com</a></p>
<a name='The European Union Constitution'></a><h2>The European Union Constitution</h2>
<p>For reasons that still escape me various Americans paraded their
ignorance about the putative constitution of a loose union of sovereign
states.</p>
<a name='Perl 6 Story Cards'></a><h2>Perl 6 Story Cards</h2>
<p>In last week's summary I mentioned the Perl 6 Stories Kwiki that
Allison and chromatic set up some months ago and suggested that people
wanting to write tests and stories for the new language take a look
at it. It seems they did, and the Wiki's seen a good deal of
activity. Check it out if you're interested in helping with the
project.</p>
<p><i><a href='http://search.cpan.org/perldoc?p6stories.kwiki.org'>p6stories.kwiki.org</a></i></p>
<a name='A modest question'></a><h2>A modest question</h2>
<p>Austin Hastings asked the design team why they were fascinated with
Traits (which will be called Roles in Perl 6). He'd read the original
paper and was unimpressed with the gains that were made by using them.</p>
<p>The awkwardly cased chromatic opened the case for Roles by pointing
out that Roles allow for finer grained naming of chunks of
functionality and code reuse. I must say I agree; I'm always keen on
opportunities to name something.</p>
<p><a href='http://groups.google.com/groups?selm=ICELKKFHGNOHCNCCCBKFMEDNCJAA.Austin_Hastings@Yahoo.com' target='_blank'>groups.google.com</a></p>
<a name='Announcement'></a><h1>Announcement</h1>
<p>Iain &quot;Spoon&quot; Truskett was not a prolific contributor to the Perl 6
mailing lists. He was, however, an important contributor to these
summaries every week; he was the maintainer of WWW::Shorten, the
module that I use to shorten the URLs on the version of the summary
that goes out to perl6-announce.</p>
<p>He died from a sudden cardiac arrest on the 29th of December. He was
24. He will be missed. This summary is dedicated to his memory.</p>
<p><a href='http://iain.truskett.id.au/' target='_blank'>iain.truskett.id.au</a> -- Iain's website</p>
</div>
